package com.zhouhong.muke_leetcode;

/**
 * @ClassName: Algorithm-and-Data-Structure
 * @Description:
 * @Author: zhouhong
 * @Create: 2021-04-04 01:11
 **/
//给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
// 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
// 你可以假设除了整数 0 之外，这个整数不会以零开头。
// 示例 1：
//输入：digits = [1,2,3]
//输出：[1,2,4]
//解释：输入数组表示数字 123。

public class LeetCode0066 {
    // 从后向前遍历，不为9时：直接加一，为9时让当前元素重置为0
    public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
            // 如果等于 9 ，重置为0
            if (digits[i] == 9){
                digits[i] = 0;
            } else {
            // 不为9，直接加一返回
                digits[i] ++;
                return digits;
            }
        }
        // 循环出来：如果没返回则：所有的位都重置为 0 ，只需要数组扩容1在前面加一即可
        //如果所有位都是进位，则长度+1
        digits = new int[digits.length + 1];
        digits[0] = 1;
        return digits;
    }
}
